INTDOS

                
               #include <dos.h>
               int intdos(inregs, outregs);
               union REGS *inregs;           значения  регистров  при вызове
               union REGS *outregs;          значения  регистров  при возврате

Описание.
Функция intdos осуществляет выполнение системного вызова MS DOS , который определен значением регистров, объявленных в inregs , и возвращает результат системного вызова в outregs . Аргументы inregs и outregs являются объединениями типа REGS . Тип объединения объявлен в include -файле <dos.h>.
Для осуществления системного вызова intdos выполняет команду INT 21H . Перед выполнением команды функция копирует содержимое inregs в соответствующие регистры. После возврата команды INT , intdos копирует значение текущего регистра в outregs . Она также копирует статус переносимого флага системы в поле cflag , размещенное в outregs . Если это поле является ненулевым, флаг устанавливается системным вызовом и указывает на условие ошибки.
Функция intdos используется для выполнения системных вызовов DOS , которые берут аргументы в регистрах, отличных от DX (DH/DL) и AL , или для системных вызовов, которые определяют ошибки посредством переносимого флага.

Возвращаемое значение.
Функция intdos возвращает значение регистра AX после завершения системного вызова. Если поле cflag в outregs является ненулевым, возникает ошибка и _doserrno устанавливает соответствующий код ошибки.

Пример:

                
               #include <dos.h>
               #include <stdio.h>
               union REGS inregs, outregs;
               .
               .
               .
               /* следующие операторы  выбирают  текущую  дату,  используя
         шестнадцатеричный вызов функции DOS 2a */
               inregs.h.ah=0x2a;
               intdos(&inregs,&outregs);
               printf("date is %d/%d/%d\n", outregs.h.dh,
                       outregs.h.dl, outregs.x.cx);
                                     
      
Hosted by uCoz